home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / tools / czesc_2 / makepatch / includes / ptoollibrary.i
Text File  |  1993-03-24  |  7KB  |  214 lines

  1. ;****** Auto-Revision Header (do not edit) *******************************
  2. ;*
  3. ;* © Copyright by PetiWare
  4. ;*
  5. ;* Filename         : PToolLibrary.i
  6. ;* Created on       : 23-Aug-92
  7. ;* Created by       : Peter Simons
  8. ;* Current revision : V2.000
  9. ;*
  10. ;*
  11. ;* Purpose: Functionoffsets for PTool.library
  12. ;*
  13. ;*
  14. ;* V2.000 : Definitionen für v2.xxx der PTool.Library
  15. ;*                                               Peter Simons (15-Mär-93)
  16. ;*
  17. ;* V1.000 : Definitionen für V1.xxx der Library
  18. ;*
  19. ;* V0.000 : --- Initial release ---
  20. ;*
  21. ;*************************************************************************
  22.  
  23. ;-------------------------------------- Offsets -----------
  24.                 LIBINIT
  25.  
  26.                 LIBDEF  _LVOAllocNewStack
  27.                 LIBDEF  _LVORestoreStack
  28.  
  29.                 LIBDEF  _LVOGetErrorMsg
  30.                 LIBDEF  _LVOErrorHandleDos
  31.                 LIBDEF  _LVOErrorHandleIntuition
  32.  
  33.                 LIBDEF  _LVOCheckConfig
  34.                 LIBDEF  _LVODisplayConfigErrorDos
  35.  
  36.                 LIBDEF  _LVOGetStackSize
  37.  
  38.                 LIBDEF  _LVOParsePatternFast
  39.                 LIBDEF  _LVOPatternMatchFast
  40.                 LIBDEF  _LVOParsePatternFastArray
  41.                 LIBDEF  _LVOPatternMatchFastArray
  42.                 LIBDEF  _LVOPatternTest
  43.  
  44.                 LIBDEF  _LVOLoadFile
  45.  
  46.                 LIBDEF  _LVOInterpretConfigBuffer
  47.                 LIBDEF  _LVOInterpretConfigFile
  48.  
  49.                 LIBDEF  _LVOPrintF
  50.                 LIBDEF  _LVOPrintFSimple
  51.  
  52.                 LIBDEF  _LVOLoadBreak
  53.                 LIBDEF  _LVOSaveBreak
  54.  
  55.                 LIBDEF  _LVOGetFileSize
  56.  
  57.                 LIBDEF  _LVOCRC16Buffer
  58.                 LIBDEF  _LVOCRC16File
  59.  
  60.                 LIBDEF  _LVOPTAllocRemember
  61.                 LIBDEF  _LVOPTFreeRemember
  62.                 LIBDEF  _LVOPTFreeOneBlock
  63.  
  64.                 LIBDEF  _LVOLoadFileRemember
  65.                 LIBDEF  _LVOInterpretConfigFileRemember
  66.  
  67.                 LIBDEF  _LVOFind
  68.                 LIBDEF  _LVOReplace
  69.                 LIBDEF  _LVOCmpStrings
  70.                 LIBDEF  _LVOCmpStringsSen
  71.  
  72.                 LIBDEF  _LVOCRC32Buffer
  73.                 LIBDEF  _LVOCRC32File
  74.  
  75. ;-------------------------------------- LibraryName -------
  76. PTOOLNAME       MACRO
  77.                 CSTR    "ptool.library"
  78.                 EVEN
  79.                 ENDM
  80.  
  81. ;-------------------------------------- LibraryBase -------
  82.             STRUCTURE PToolLib,LIB_SIZE
  83.                 ULONG   ptl_SysBase
  84.                 ULONG   ptl_DOSBase
  85.                 ULONG   ptl_IntuitionBase
  86.                 ULONG   ptl_LocaleBase
  87.                 ULONG   ptl_MessageCatalog
  88.                 ULONG   ptl_SegList
  89.                 LABEL   ptl_SIZEOF
  90.  
  91. ;-------------------------------------- CheckConfig -------
  92.                 BITDEF  CC,68010,0
  93.                 BITDEF  CC,68020,1
  94.                 BITDEF  CC,68030,2
  95.                 BITDEF  CC,68040,3
  96.                 BITDEF  CC,68881,4
  97.                 BITDEF  CC,68882,5
  98.                 BITDEF  CC,FPU40,6
  99.                 BITDEF  CC,OS_VERSION,16
  100. CC_MAXCONFIG    EQU     %00000000000000010000000001111111
  101.  
  102. ;-------------------------------------- InterpretConfig ---
  103. IC_TagBase      EQU     TAG_USER+$F0000
  104.  
  105. IC_String       EQU     IC_TagBase+$01
  106. IC_Number       EQU     IC_TagBase+$02
  107. IC_YesNo        EQU     IC_TagBase+$03
  108.  
  109. ;-------------------------------------- PTAllocRemember ---
  110. PTMemoryList    CLRSO           ; Interner Aufbau der Remember-Liste
  111. ptml_NextBlock  SO.L    1
  112. ptml_Size       SO.L    1
  113. ptml_SIZEOF     SOVAL
  114.  
  115. ;-------------------------------------- ErrorHandle -------
  116. ; ERRORHANDLE ist ein fertig ausgearbeitetes Macro, daß die komfortable
  117. ; Einbindung von Fehlermeldungen erlaubt. Die Parameter sind:
  118. ; SaveTo, Errornummer, Continue, [Dataflow], [DataFlow2]
  119. ;
  120. ; SaveTo - kann auch weggelassen werden (sprich:''), dann wird D0 nicht
  121. ;         gespeichert sondern lediglich getestet. Wichtig: Dieses Macro
  122. ;         funktioniert nach Routinen, die eine 0L als Fehler
  123. ;         zurückgeben!
  124. ;
  125. ; Errornummer - Die Errornummer
  126. ;
  127. ; DataFlow - Der erste Parameter für die Fehlermeldung, je nachdem eine
  128. ;         Zahl oder Adresse. Um die richtige Verwaltung kümmert sich das
  129. ;         Macro selbst.
  130. ;
  131. ; DataFlow2 - genau wie der vorherige Parameter, nur ist dieser optional
  132. ;
  133. ;
  134. ;
  135. ; Das Macro ruft eine Funktion mir Namen _ErrorHandle auf, die ungefähr
  136. ; folgendes Aussehen haben sollte:
  137. ;
  138. ; _ErrorHandle    movem.l d0-d1/a0-a2/a6,-(SP)
  139. ;                 lea     (PrgName,PC),a0
  140. ;                 sub.l   a2,a2
  141. ;                 move.l  (_PToolBase,PC),a6
  142. ;                 jsr     (_LVOErrorHandleIntuition,a6)
  143. ;                 movem.l (SP)+,d0-d1/a0-a2/a6
  144. ;                 rts
  145. ;
  146. ; Für ErrorHandleDos() kann A2 natuerlich vernachlässigt werden,
  147. ; allerdings muß dann D1 initialisiert werden. Die Routine bekommt als
  148. ; Parameter einfach D0 und A1 fertig initialisiert. Wollen sie also
  149. ; demnächst einen Fehler mittels IoErr() abfangen, reicht jetzt:
  150. ;
  151. ;                 [...]
  152. ;                 tst.l   d0
  153. ;                 bne.b   .NoError
  154. ;                 pea     (.GoOn,PC)
  155. ;                 bra     _ErrorHandle    ; Die Null steht schon in D0!!
  156. ;
  157. ; .NoError        [...]
  158. ;
  159. ;         oder sogar:
  160. ;
  161. ;                 ERRORHANDLE ,0,(.GoOn,PC)
  162. ;
  163. ;
  164.  
  165. ERRORHANDLE     MACRO
  166. errbyte         set     0
  167.         IFC ,\1
  168.                 tst.l   d0                      ; Ist ein Ziel für D0 an-
  169.         ELSE                                    ; gegeben? Wenn nein, dann
  170.                 move.l  d0,\1                   ; einfach D0 testen.
  171.         ENDC
  172.                 bne.b   .NoError\@              ; In D0 steht schon eine
  173.         IFEQ \2                                 ; Null!!
  174.                 pea     \3
  175.                 bra     _ErrorHandle            ; Fehler 0 --> keine Parameter
  176.         ELSE
  177.           IFEQ \2-5
  178.                 pea     \3
  179.                 bra     _ErrorHandle            ; Fehler 5 --> keine Parameter
  180.           ELSE
  181.  
  182.                 moveq   #\2,d0                  ; Fehlernummer nach D0
  183.             IFNC \5                             ; Wenn vorhanden, den
  184.               IFEQ \2-9                         ; zweiten DataFlow auf den
  185.                 move.w  #\5,-(SP)               ; Stack legen.
  186. errbyte         set     errbyte+2
  187.               ELSE                              ; Sonderfälle:
  188.                 pea     \5                      ; Err 9 = Zahl.W
  189. errbyte         set     errbyte+4
  190.               ENDC                              ; Ansonsten immer ein Zeiger
  191.             ENDC                                ; auf einen String
  192.  
  193.             IFEQ \2-2                           ; Ersten DataFlow auf den
  194.                 move.l  #\4,-(SP)               ; Stack legen.
  195. errbyte         set     errbyte+4
  196.             ELSE                                ; Sonderfälle:
  197.               IFEQ \2-8                         ; Err 2 = Zahl.L
  198.                 move.l  #\4,-(SP)               ; Err 8 = Zahl.L
  199. errbyte         set     errbyte+4
  200.               ELSE
  201.                 pea     \4                      ; Ansonsten immer ein Zeiger
  202. errbyte         set     errbyte+4
  203.               ENDC
  204.             ENDC
  205.                 move.l  SP,a1                   ; Zeiger auf den DataFlow
  206.                 bsr     _ErrorHandle            ; nach A1 laden und in
  207.                 addq.w  #errbyte,SP             ; ErrorHandle() springen.
  208.                 bra     \3
  209.           ENDC
  210.         ENDC
  211. .NoError\@
  212.                 ENDM
  213.  
  214.